// app.js - 微信小程序入口文件
const config = require('./utils/config.js');

App({
  /**
   * 小程序初始化完成时触发，全局只触发一次
   */
  onLaunch: function (options) {
    console.log('小程序启动', options);
    
    // 初始化全局配置
    this.globalData.config = config;
    
    // 检查微信版本
    this.checkWechatVersion();
    
    // 获取系统信息
    this.getSystemInfo();
    
    // 检查更新
    this.checkForUpdate();
  },

  /**
   * 小程序启动，或从后台进入前台显示时触发
   */
  onShow: function (options) {
    console.log('小程序显示', options);
  },

  /**
   * 小程序从前台进入后台时触发
   */
  onHide: function () {
    console.log('小程序隐藏');
  },

  /**
   * 小程序发生脚本错误或 API 调用报错时触发
   */
  onError: function (msg) {
    console.error('小程序错误:', msg);
  },

  /**
   * 页面不存在时触发
   */
  onPageNotFound: function (res) {
    console.error('页面不存在:', res);
    // 跳转到首页
    wx.reLaunch({
      url: '/pages/talk/talk'
    });
  },

  /**
   * 小程序要打开的页面不存在时触发
   */
  onUnhandledRejection: function (res) {
    console.error('未处理的Promise拒绝:', res);
  },

  /**
   * 小程序主题发生改变时触发
   */
  onThemeChange: function (res) {
    console.log('主题切换:', res);
    this.globalData.theme = res.theme;
  },

  /**
   * 检查微信版本
   */
  checkWechatVersion: function () {
    const systemInfo = wx.getSystemInfoSync();
    console.log('系统信息:', systemInfo);
    
    // 检查基础库版本
    if (this.compareVersion(systemInfo.SDKVersion, '2.10.0') < 0) {
      wx.showModal({
        title: '版本过低',
        content: '当前微信版本过低，无法使用该小程序，请升级到最新微信版本后重试。',
        showCancel: false
      });
    }
  },

  /**
   * 获取系统信息
   */
  getSystemInfo: function () {
    const that = this;
    wx.getSystemInfo({
      success: function (res) {
        that.globalData.systemInfo = res;
        console.log('系统信息获取成功:', res);
        
        // 设置状态栏高度
        that.globalData.statusBarHeight = res.statusBarHeight;
        
        // 判断iOS还是Android
        that.globalData.isIOS = res.system.indexOf('iOS') !== -1;
      },
      fail: function (err) {
        console.error('获取系统信息失败:', err);
      }
    });
  },

  /**
   * 检查小程序更新
   */
  checkForUpdate: function () {
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager();
      
      // 检查更新
      updateManager.onCheckForUpdate(function (res) {
        console.log('检查更新结果:', res);
        if (res.hasUpdate) {
          console.log('发现新版本');
        }
      });

      // 新版本下载完成
      updateManager.onUpdateReady(function () {
        wx.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否重启应用？',
          success: function (res) {
            if (res.confirm) {
              // 应用新版本并重启
              updateManager.applyUpdate();
            }
          }
        });
      });

      // 新版本下载失败
      updateManager.onUpdateFailed(function () {
        console.error('新版本下载失败');
      });
    }
  },

  /**
   * 版本比较工具
   */
  compareVersion: function (v1, v2) {
    v1 = v1.split('.');
    v2 = v2.split('.');
    const len = Math.max(v1.length, v2.length);

    while (v1.length < len) {
      v1.push('0');
    }
    while (v2.length < len) {
      v2.push('0');
    }

    for (let i = 0; i < len; i++) {
      const num1 = parseInt(v1[i]);
      const num2 = parseInt(v2[i]);

      if (num1 > num2) {
        return 1;
      } else if (num1 < num2) {
        return -1;
      }
    }
    return 0;
  },

  /**
   * 全局数据
   */
  globalData: {
    // 用户信息
    userInfo: null,
    // 系统信息
    systemInfo: null,
    // 状态栏高度
    statusBarHeight: 0,
    // 是否iOS系统
    isIOS: false,
    // 当前主题
    theme: 'light',
    // 配置信息
    config: null,
    // 全局loading状态
    loading: false,
    // 网络状态
    networkType: 'unknown'
  }
});
